package com.example.mapper;

import com.example.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface UserMapper {

    // 任务一：查询特定用户及其拥有的所有角色
    User findUserWithRolesByUsername(@Param("username") String username);

    // 任务三：根据条件搜索用户，并连带其角色和权限信息
    List<User> findUsersWithRolesAndMenusByCondition(
            @Param("username") String username,
            @Param("email") String email,
            @Param("status") Integer status,
            @Param("offset") Integer offset,
            @Param("pageSize") Integer pageSize);

    // 获取总记录数（用于分页）
    Long countUsersByCondition(
            @Param("username") String username,
            @Param("email") String email,
            @Param("status") Integer status);

    // 任务四：维护用户角色 - 删除用户所有角色
    void deleteUserRoles(@Param("userId") Long userId);

    // 任务四：维护用户角色 - 添加用户角色
    void addUserRole(@Param("userId") Long userId, @Param("roleId") Long roleId);
}
